import proclaim = require('proclaim');

proclaim.fail('foo', 'bar', 'Foo equals bar', '===');
proclaim.ok(5, '5 equals true');
proclaim.notOk(5, '5 equals false');
proclaim.equal('abc', 'bca', 'Foo equals bar');
proclaim.notEqual('abc', 'bca', 'Foo equals bar');
proclaim.strictEqual('abc', 'bca', 'Foo equals bar');
proclaim.notStrictEqual('abc', 'bca', 'Foo equals bar');
proclaim.deepEqual('abc', 'bca', 'Foo equals bar');
proclaim.notDeepEqual('abc', 'bca', 'Foo equals bar');
proclaim.deepStrictEqual('abc', 'bca', 'Foo equals bar');
proclaim.notDeepStrictEqual('abc', 'bca', 'Foo equals bar');
proclaim.throws(() => {}, {}, 'throws error');
proclaim.doesNotThrow(() => {}, {}, 'throws error');
proclaim.isTypeOf('same type', 'same type', 'values match');
proclaim.isNotTypeOf('same type', 'same type', 'values dont match');
proclaim.isInstanceOf('same instance', 'same instance', 'instance match');
proclaim.isNotInstanceOf('same instance', 'same instance', 'instance dont match');
proclaim.isArray([], 'is array');
proclaim.isNotArray([], 'is array');
proclaim.isBoolean(true, 'is bool');
proclaim.isNotBoolean(true, 'is bool');
proclaim.isTrue(true, 'is true');
proclaim.isFalse(false, 'is true');
proclaim.isFunction('value here', 'value was a thing');
proclaim.isNotFunction('value here', 'value was a thing');
proclaim.isNaN('value here', 'value was a thing');
proclaim.isNotNaN('value here', 'value was a thing');
proclaim.isNull('value here', 'value was a thing');
proclaim.isNotNull('value here', 'value was a thing');
proclaim.isNumber('value here', 'value was a thing');
proclaim.isNotNumber('value here', 'value was a thing');
proclaim.isObject('value here', 'value was a thing');
proclaim.isNotNull('value here', 'value was a thing');
proclaim.isNotObject('value here', 'value was a thing');
proclaim.isString('value here', 'value was a thing');
proclaim.isNotString('value here', 'value was a thing');
proclaim.isUndefined('value here', 'value was a thing');
proclaim.isDefined('value here', 'value was a thing');
proclaim.match('a', 'a', 'match');
proclaim.notMatch('a', 'b', 'no match');
proclaim.include([1, 2, 3], 5, 'no match');
proclaim.doesNotInclude([1, 2, 3], 5, 'no match');
proclaim.lengthEquals([1, 2, 3], 3, 'length equals');
proclaim.lessThan(5, 10, 'true');
proclaim.lessThanOrEqual(5, 10, 'true');
proclaim.greaterThan(5, 10, 'false');
proclaim.greaterThanOrEqual(5, 10, 'false');
proclaim.arity(() => {}, {}, 'no fn length');
proclaim.almostEqual(5, 10, 3, 'not almost equal');
proclaim.isNotEnumerable({}, {}, 'true');
proclaim.isEnumerable({}, {}, 'true');
proclaim.hasName(() => {}, 'name here', 'false');
